
// 同步 action creator（普通对象）
export const syncAdd = (amount) => ({
  type: "counter/syncAdd",
  payload: amount,
});

// 手写 thunk：返回一个函数，内部可做异步逻辑
export const fetchCount = (amount) => {
  // 这里返回的函数会被 thunk middleware 调用：fn(dispatch, getState)
  return async (dispatch, getState) => {
    // 可以在这里读取当前 state（如果需要）
    // const stateBefore = getState();

    dispatch({ type: "counter/fetchStart" });

    try {
      // 模拟异步请求（例如 fetch / axios）
      const result = await new Promise((resolve) =>
        setTimeout(() => resolve(amount), 1000)
      );

      // dispatch 一个普通同步 action，把结果放到 payload
      dispatch({ type: "counter/fetchSuccess", payload: result });

      // **重要**：返回结果，这样外部调用 dispatch(fetchCount(...)) 会得到这个 Promise 的值
      return result;
    } catch (err) {
      // 失败分支：派发错误 action
      dispatch({ type: "counter/fetchError", error: err });
      // 同时抛出异常，让调用方可以 catch
      throw err;
    }
  };
};
